/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package prjtgl.controler.membre;


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.zkoss.bind.BindUtils;
import org.zkoss.bind.annotation.BindingParam;
import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.Init;
import org.zkoss.bind.annotation.NotifyChange;
import org.zkoss.zk.ui.Sessions;
import org.zkoss.zk.ui.select.SelectorComposer;
import org.zkoss.zk.ui.select.annotation.Listen;
import org.zkoss.zk.ui.select.annotation.Wire;
import org.zkoss.zk.ui.util.Clients;
import org.zkoss.zul.*;
import prjtgl.metier.Application;
import prjtgl.metier.comptes.Membre;
import prjtgl.metier.comptes.profil_utilisateur.DomaineExpertise;
import prjtgl.metier.comptes.profil_utilisateur.poste.Experience;
import prjtgl.util.SessionUtilisateur;






/**
 *
 * @author Adrien
 */
public class ModifierProfil{
    
    
//    @Wire
//    Checkbox check_EmB,check_CoF,check_CoB,check_AuF,check_AuB;
//    
//    @Wire
//    Listbox profil, disponibilite;
//    
    private Membre membre;
   
    private List<DomaineExpertise> domaineExpertise = new ArrayList<DomaineExpertise>();
    private List<DomaineExpertise> domaineExpertiseActuel = new ArrayList<DomaineExpertise>();
    private List<Experience> experiences = new ArrayList<Experience>();
    
    public List<DomaineExpertise> getDomaineExpertise() { return domaineExpertise;} 
    
    private String profilActuel, profil0, profil1, profil2, profil3;
    
    public String getProfil0() { return profil0; }
    public String getProfil1() { return profil1; }
    public String getProfil2() { return profil2; }
    public String getProfil3() { return profil3; }
     
   
    
    private String dispoActuel, dispo0, dispo1;
    
    public String getDispo0() { return dispo0; }
    public String getDispo1() { return dispo1; }
    
    public List<Experience> getSesExperiences() { return (List<Experience>) experiences; }
   
    public String getExpString(Experience experience)
    {
        if ( experience.getDateFin() == null ) return "Actuellement : Direction "+experience.getDirection().getDescription()+" : Poste "+experience.getPoste().getIntitule();
        else return experience.obtenirDateDebut()+" - "+experience.obtenirDateFin()+" : Direction "+experience.getDirection().getDescription()+" : Poste "+experience.getPoste().getIntitule();
        
    }
 
    
    public String domaineExpertiseIsPresent(DomaineExpertise domaineExpertise)
    {
        if ( membre.getDomaines().contains(domaineExpertise) ) return "true";
        else return "false";
    }

    
    @Init
    public void init()
    {
        Application ap = Application.getInstance();
        String email = SessionUtilisateur.getUtilisateur().getEmail();
        membre = Application.getInstance().rechercherMembre(email);
        domaineExpertise = ap.listerDomainesExpertise();
        experiences = membre.getExperiences();
        profilActuel = membre.getProfil().getIntitule();
       
      
        domaineExpertiseActuel = membre.getDomaines();
        
        if ( membre.getProfil().getIntitule().equals("Non renseigné")) profil0 = "true";
        else profil0 = "false";
        
        if ( membre.getProfil().getIntitule().equals("MOA")) profil1 = "true";
        else profil1 = "false";
          
        if ( membre.getProfil().getIntitule().equals("MOE")) profil2 = "true";
        else profil2 = "false";
            
        if ( membre.getProfil().getIntitule().equals("Doube compétence")) profil3 = "true";
        else profil3 = "false";
              
     
        
        if ( membre.getEstDisponible())
        {
            dispo0 = "true";
            dispo1 = "false";
            dispoActuel = "En contrat permanent";
        }
        else
        {
            dispo0 = "false";
            dispo1 = "true";
            dispoActuel = "En prestation";
        }
          
        
    }
    
    @Command
    public void selectDomaineItem(@BindingParam("selectDomaine") DomaineExpertise selectDomaine) 
    { 
        if ( domaineExpertiseActuel.contains(selectDomaine) )  domaineExpertiseActuel.remove(selectDomaine);
        else domaineExpertiseActuel.add(selectDomaine);
    }
    
    @Command
    public void selectProfilItem(@BindingParam("selectProfil") String selectProfil) { profilActuel = selectProfil; }
  
    
    @Command
    public void selectDispoItem(@BindingParam("selectDispo") String selectDispo) { dispoActuel = selectDispo; }
  
    
    @Command
    public void save()
    {
        Application ap = Application.getInstance();
      
        membre.setDomaines(domaineExpertiseActuel);
        
     
        membre.setProfil(ap.rechercherProfil(profilActuel));
      
        
        // TODO dispo date , changer dispo...
       
        if ( dispoActuel.equals("En contrat permanent"))  membre.setEstDisponible(true);
        else if ( dispoActuel.equals("En prestation"))  membre.setEstDisponible(false);
       
        ap.updateMembre(membre);
       
    }
    
    @Command
    public void updateExp(@BindingParam("experienceUpdate") Experience experienceUpdate)
    {
        
    }
    
    @Command
    public void changePage(@BindingParam("content") String contentPage, @BindingParam("experienceData") Experience experience)
    {
        Sessions.getCurrent().setAttribute("experience", experience);
        Experience exp = (Experience) Sessions.getCurrent().getAttribute("experience");
        Map<String, Object> args = new HashMap();
        args.put("content", contentPage);
        BindUtils.postGlobalCommand(null, null, "changePage", args);
    }
    
    @Command
    public void test(@BindingParam("experienceData") Experience experience)
    {
      
       
    }
   
}
